//
//  UIScrollView+SEGSWindmill.h
//  RefreshDemo
//
//  Created by Clavis on 2019/1/2.
//  Copyright © 2019 Clavis. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "SEGWindmillRefreshCommonHeader.h"
#import "SEGWindmillRefreshCommonFooter.h"

NS_ASSUME_NONNULL_BEGIN

@interface UIScrollView (SEGWindmill)

@property (nonatomic, strong, nullable) SEGWindmillRefreshCommonHeader *seg_header;
@property (nonatomic, strong, nullable) SEGWindmillRefreshCommonFooter *seg_footer;
@property (nonatomic, assign) NSInteger seg_totalDataCount;

#pragma mark - 4.9.0改版之后的API

/**
 初始化下拉刷新
 @param headerRefreshBlock 刷新block
 */
- (void)addWindmillWithHeaderRefreshBlock:(SEGWindmillComponentRefreshBeginBlock)headerRefreshBlock;

/**
 初始化上拉加载
 @param footerRefreshBlock 刷新block
 */
- (void)addWindmillWithFooterRefreshBlock:(SEGWindmillComponentRefreshBeginBlock)footerRefreshBlock;

/**
 初始下拉刷新&上拉加载
 @param headerRefreshBlock 头部刷新block
 @param footerRefreshBlock 底部属性block
 */
- (void)addWindmillWithHeaderRefreshBlock:(SEGWindmillComponentRefreshBeginBlock)headerRefreshBlock footerRefreshBlock:(SEGWindmillComponentRefreshBeginBlock)footerRefreshBlock;

/**
 开始下拉刷新动画 & 触发刷新block或scrollViewWillEndDragging代理
 */
- (void)beginHeaderRefreshing;

/**
 开始上拉加载动画 & 触发刷新block或scrollViewWillEndDragging代理
 */
- (void)beginFooterRefreshing;

/**
 停止头部刷新和底部刷新动画
 */
- (void)stopAnimatingWindmill;

/**
 停止头部刷新动画
 */
- (void)stopHeaderAnimatingWindmill;

/**
 停止底部刷新动画
 */
- (void)stopFooterAnimatingWindmill;

@end

NS_ASSUME_NONNULL_END

/**
 *
 
 ================== 4.9.0改版之后的使用方法 ==================
 1.初始化并传入block
 addWindmillWithHeaderRefreshBlock:
 addWindmillWithFooterRefreshBlock:
 addWindmillWithHeaderRefreshBlock:footerRefreshBlock:
 
 2.开始刷新，可调用方法，也可手动触发
 注：开始刷新会开始刷新动画，同时触发block事件
 startHeaderAnimatingWindmill
 startFooterAnimatingWindmill
 
 3.停止刷新
 stopAnimatingWindmill
 stopHeaderAnimatingWindmill
 stopFooterAnimatingWindmill
 
 
 ================== 4.9.0之前的使用步骤，组件话之后不兼容此种写法 ==================
 注：justStartAnimatingWindmill 会开始头部刷新动画，但不会触发scrollViewWillEndDragging方法，即需要手动处理刷新逻辑
 
 1.在viewDidlLoad或viewDidAppare中添加[self.tableView addWindmillInSuperView:self.tableView的父view];
 如果需要删除或隐藏相应的视图在调用addWindmillInSuperView:后再调用justShowHeader或者justShowfooter
 
 2.添加代码
 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{
 [scrollView draggingScrollViewInOffsety:scrollView.contentOffset.y];
 }
 
 3.添加代码
 -(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
 [scrollView startAnimatingWindmill:^(BOOL canHeaderFresh, BOOL isFooter) {
 if (isFooter) {//上拉加载
 if (canHeaderFresh) {//可刷新
 
 }
 }else{//下拉刷新
 if (canHeaderFresh) {//可刷新
 
 }
 }
 
 }];
 }
 
 4.在相应的地方调用stopAnimatingWindmill停止刷新动效，一般在访问刷新的数据接口后停止。
 */


